iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
0
Modern Web

從ES到ESNext - 30天輕鬆掌握ECMAScript系列 第 26

ES2021(ES12) - string、Promise、運算子

  • 分享至 

  • xImage
  •  

本系列文章經過重新編排和擴充,已出書為ECMAScript關鍵30天。原始文章因當時準備時程緊迫,多少有些許錯誤。為了避免造成讀者的困擾,以及配合書籍的內容規劃,將會陸續更新本系列文章。
本篇文章在 2021/11/2 已更新。

String.prototype.replaceAll(target,replacer)

透過找到所有匹配傳入的正規表達式或是文字內容target,並且取代為傳入的字串,或是自訂取代行為的replacer

'寂寞的人被給予了思念就會顯得更寂寞'.replaceAll('寂寞', '孤單');
// 孤單的人被給予了思念就會顯得更孤單

lyrics.replaceAll(/apple/, 'pineapple');
// error: String.prototype.replaceAll called...

lyrics.replaceAll(/apple/gi, 'pineapple');
// "I have a pen. I have an pineapple. Ah, pineapple pen."

Promise.any(promises)

只要有一個非同步操作將狀態轉為settled,而且操作成功,就能透過resolve函式的呼叫,將結果狀態傳遞到then方法的回呼函式執行。如果都失敗,則執行catch方法的回呼函式,並且接收固定的錯誤訊息。

const p1 = new Promise((resolve, reject) => setTimeout(resolve, 200, 'p1'));
const p2 = new Promise((resolve, reject) => setTimeout(resolve, 300, 'p2'));
const p3 = new Promise((resolve, reject) => setTimeout(reject, 100, 'p3'));

Promise.any([p1, p2, p3])
    .then((result) => console.log('then:', result))
    .catch((error) => console.error('catch:', error));
// then: p1

運算子

數字分隔 _

為了方便閱讀位數很長的數字或bigint數值,可以使用多個底線(_)隔在數字之間。

let x = 2_3333_3333;

上一篇
ES2020(ES11) - string、bigint、Promise、globalThis
下一篇
ES2021(ES12) - Intl、WeakRef
系列文
從ES到ESNext - 30天輕鬆掌握ECMAScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言